/**
 * 错误码定义
 * 规则：
 * 1xxx: 通用错误
 * 2xxx: 用户相关错误
 * 3xxx: 权限相关错误
 * 4xxx: 资源相关错误
 * 5xxx: 业务逻辑错误
 */
export enum ErrorCode {
  // ==================== 通用错误 (1xxx) ====================

  /**
   * 请求参数错误
   */
  BAD_REQUEST = 1001,

  /**
   * 未授权
   */
  UNAUTHORIZED = 1002,

  /**
   * 禁止访问
   */
  FORBIDDEN = 1003,

  /**
   * 资源不存在
   */
  NOT_FOUND = 1004,

  /**
   * 服务器内部错误
   */
  INTERNAL_SERVER_ERROR = 1005,

  /**
   * 请求过于频繁
   */
  TOO_MANY_REQUESTS = 1006,

  // ==================== 用户相关错误 (2xxx) ====================

  /**
   * 用户不存在
   */
  USER_NOT_FOUND = 2001,

  /**
   * 用户已存在
   */
  USER_ALREADY_EXISTS = 2002,

  /**
   * 用户名或密码错误
   */
  INVALID_CREDENTIALS = 2003,

  /**
   * 用户已被禁用
   */
  USER_DISABLED = 2004,

  /**
   * 邮箱已被使用
   */
  EMAIL_ALREADY_EXISTS = 2005,

  // ==================== 权限相关错误 (3xxx) ====================

  /**
   * Token 无效
   */
  INVALID_TOKEN = 3001,

  /**
   * Token 已过期
   */
  TOKEN_EXPIRED = 3002,

  /**
   * 没有权限
   */
  NO_PERMISSION = 3003,

  /**
   * 角色不存在
   */
  ROLE_NOT_FOUND = 3004,

  // ==================== 资源相关错误 (4xxx) ====================

  /**
   * 商品不存在
   */
  PRODUCT_NOT_FOUND = 4001,

  /**
   * 商品已下架
   */
  PRODUCT_OFFLINE = 4002,

  /**
   * 订单不存在
   */
  ORDER_NOT_FOUND = 4003,

  /**
   * 文档不存在
   */
  DOCUMENT_NOT_FOUND = 4004,

  /**
   * 分类不存在
   */
  CATEGORY_NOT_FOUND = 4005,

  // ==================== 业务逻辑错误 (5xxx) ====================

  /**
   * 库存不足
   */
  INSUFFICIENT_STOCK = 5001,

  /**
   * 余额不足
   */
  INSUFFICIENT_BALANCE = 5002,

  /**
   * 订单状态错误
   */
  INVALID_ORDER_STATUS = 5003,

  /**
   * 支付失败
   */
  PAYMENT_FAILED = 5004,

  /**
   * 会员等级不足
   */
  INSUFFICIENT_MEMBERSHIP = 5005,

  /**
   * 文件上传失败
   */
  FILE_UPLOAD_FAILED = 5006,

  /**
   * 文件类型不支持
   */
  UNSUPPORTED_FILE_TYPE = 5007,

  /**
   * 文件大小超限
   */
  FILE_SIZE_EXCEEDED = 5008,
}

/**
 * 错误码对应的错误消息
 */
export const ErrorMessage: Record<ErrorCode, string> = {
  // 通用错误
  [ErrorCode.BAD_REQUEST]: '请求参数错误',
  [ErrorCode.UNAUTHORIZED]: '未授权，请先登录',
  [ErrorCode.FORBIDDEN]: '没有权限访问',
  [ErrorCode.NOT_FOUND]: '请求的资源不存在',
  [ErrorCode.INTERNAL_SERVER_ERROR]: '服务器内部错误',
  [ErrorCode.TOO_MANY_REQUESTS]: '请求过于频繁，请稍后再试',

  // 用户相关错误
  [ErrorCode.USER_NOT_FOUND]: '用户不存在',
  [ErrorCode.USER_ALREADY_EXISTS]: '用户已存在',
  [ErrorCode.INVALID_CREDENTIALS]: '用户名或密码错误',
  [ErrorCode.USER_DISABLED]: '该用户已被禁用',
  [ErrorCode.EMAIL_ALREADY_EXISTS]: '邮箱已被使用',

  // 权限相关错误
  [ErrorCode.INVALID_TOKEN]: 'Token 无效',
  [ErrorCode.TOKEN_EXPIRED]: 'Token 已过期，请重新登录',
  [ErrorCode.NO_PERMISSION]: '没有权限执行此操作',
  [ErrorCode.ROLE_NOT_FOUND]: '角色不存在',

  // 资源相关错误
  [ErrorCode.PRODUCT_NOT_FOUND]: '商品不存在',
  [ErrorCode.PRODUCT_OFFLINE]: '商品已下架',
  [ErrorCode.ORDER_NOT_FOUND]: '订单不存在',
  [ErrorCode.DOCUMENT_NOT_FOUND]: '文档不存在',
  [ErrorCode.CATEGORY_NOT_FOUND]: '分类不存在',

  // 业务逻辑错误
  [ErrorCode.INSUFFICIENT_STOCK]: '库存不足',
  [ErrorCode.INSUFFICIENT_BALANCE]: '余额不足',
  [ErrorCode.INVALID_ORDER_STATUS]: '订单状态错误',
  [ErrorCode.PAYMENT_FAILED]: '支付失败',
  [ErrorCode.INSUFFICIENT_MEMBERSHIP]: '会员等级不足',
  [ErrorCode.FILE_UPLOAD_FAILED]: '文件上传失败',
  [ErrorCode.UNSUPPORTED_FILE_TYPE]: '不支持的文件类型',
  [ErrorCode.FILE_SIZE_EXCEEDED]: '文件大小超过限制',
};



